Visualização 3D

Gráficos de funções de 2 variáveis:

> restart; with(plots):

> plot3d(x^2-y^2, x=-1..1, y=-1..1, title=`Uma sela`); # uma função

[Maple Plot]

> plot3d({x^2-y^2, x^2+y^2}, x=-1..1, y=-1..1, title=`Sela e parabolóide`); Assim não dá para mudar certas opções --- será que dá para imitar o procedimento 2D?

[Maple Plot]

> sela := plot3d(x^2-y^2, x=-1..1, y=-1..1, style=patchnogrid):

> parab := plot3d(x^2+y^2, x=-1..1, y=-1..1, style=wireframe, color=red):

> display({sela, parab}); Agora sim!

[Maple Plot]

> animate3d((s*x)^2 + (s*y)^2, x=-1..1, y=-1..1, s=0..1); Animação simples

[Maple Plot]

> animate3d({(s*x)^2+(s*y)^2, x^2+y^2}, x=-1..1, y=-1..1, s=0..1); Animação simultanea simples

[Maple Plot]

Curvas parametrizadas no espaço

> restart; with(plots):

> spacecurve([cos(t), sin(t),t], t=0..5*Pi, scaling=constrained); uma curva parametrizada

[Maple Plot]

> spacecurve({[cos(t), sin(t),t], [0,0,t]}, t=0..5*Pi, scaling=constrained); duas curvas

[Maple Plot]

> tubeplot([cos(t), sin(t),t], t=0..5*Pi, radius=.2, scaling=constrained, orientation=[40,10]); tubo envolvendo a curva

[Maple Plot]

Como não há animatespacecurve... pode-se criar um procedimento

> animacurva := proc(func, tvar::range, svar::range, N::posint)
local s, s0, s1, quadro, i;

> with(plots):

> s0 := lhs(svar): s1 := rhs(svar):

> quadro[0] := spacecurve(func(t, s0), t=tvar):

> for i from 1 to N-1 do

> s := s0 + i*(s1-s0)/(N-1);

> quadro[i] := spacecurve(func(t, s), t=tvar):

> od:

> display([seq(quadro[i], i=0..N-1)], insequence=true);

> end:

A função criada acima tem como parâmetros de entrada:

func : uma função de 2 variáveis, sendo a segunda variável o parâmetro da animação.

tvar: variação do primeiro parâmetro

svar: variação do parâmetro de animação

N: número de quadros da animação (frames)

> animacurva((t, s) -> [cos(t), sin(t), t*s], 0..4*Pi, 0..1, 10); # aplicando...

[Maple Plot]

Superfícies parametrizadas

> restart; with(plots):

> xi := (u, v) -> [u*cos(v), u*sin(v), u]; parametrização de uma superfície [Maple Math] = [x(u,v], y(u,v), z(u,v)]

[Maple Math]

> plot3d(xi(u,v), u=0..1, v=0..2*Pi); plotando a superfície acima

[Maple Plot]

> plot3d({xi(u,v), xi(-u,v)}, u=0..1, v=0..2*Pi); plotando duas superfícies (neste caso, apenas outra reparametrização)

[Maple Plot]

> animate3d(xi(u, v*s), u=0..1, v=0..2*Pi, s=0..1, style=wireframe, color=blue); anima1:= %: animando e gravando em anima1

[Maple Plot]

> fig := plot3d(xi(u, v), u=0..1, v=0..2*Pi, style=wireframe): gravando a figura em fig

> display({fig, anima1}); animação mais figura estática

[Maple Plot]

Plotando superfícies implícitas:

> restart; with(plots): limpando e recarregando o pacote...

> implicitplot3d(x^2+y^2-z^2=1, x=-2..2, y=-2..2, z=-2..2,style=wireframe);

[Maple Plot]

Animação com superfícies implicitas: só construindo:

> s0 := -1: s1 := 1: variação do parâmetro s de animação

> quadro[0] := implicitplot3d(x^2 + s0*y^2-z^2=1, x=-2..2, y=-2..2, z=-2..2): primeiro quadro

> for i from 1 to 10 do os outros quadros

> s := s0 + i*(s1-s0)/10;

> quadro[i] := implicitplot3d(x^2+s*y^2-z^2=1, x=-2..2, y=-2..2, z=-2..2):

> od:

> display([seq(quadro[i], i=0..10)],insequence=true, scaling=constrained); finalmente a animação

[Maple Plot]

Veja a lista dos comandos gráficos do pacote plots e plottools.

> with(plots);

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

> with(plottools);

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

Voltar para o Sumário